package org.hfy.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 库存管理实体类
 * 
 * @author hfy
 * @version 1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("inventory")
public class Inventory extends BaseEntity {

    /**
     * 厂内编号
     */
    private String factoryNo;

    /**
     * 报价单ID
     */
    private Long quotationId;

    /**
     * 报价明细ID
     */
    private Long quotationItemId;

    /**
     * 客户代码
     */
    private String customerCode;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 物料编码
     */
    private String materialCode;

    // PCB技术参数
    /**
     * 层数
     */
    private String layers;

    /**
     * 板厚(mm)
     */
    private String thickness;

    /**
     * 表面处理
     */
    private String surfaceTreatment;

    /**
     * 阻焊
     */
    private String solderMask;

    /**
     * 字符
     */
    @TableField("`character`")
    private String character;

    /**
     * 板材
     */
    private String boardMaterial;

    /**
     * 交货尺寸(mm)
     */
    private String deliverySize;

    // 数量统计
    /**
     * 总入库数量
     */
    private Integer totalInboundQuantity;

    /**
     * 总出库数量
     */
    private Integer totalOutboundQuantity;

    /**
     * 当前库存数量
     */
    private Integer currentStockQuantity;

    /**
     * 备品数量
     */
    private Integer spareQuantity;

    // 金额信息
    /**
     * 单价
     */
    private BigDecimal unitPrice;

    /**
     * 库存总金额
     */
    private BigDecimal totalAmount;

    // 日期信息
    /**
     * 最后入库日期
     */
    private LocalDate lastInboundDate;

    /**
     * 最后出库日期
     */
    private LocalDate lastOutboundDate;

    // 状态信息
    /**
     * 库存状态 (有库存, 无库存, 预警)
     */
    private String status;

    /**
     * 最小库存预警数量
     */
    private Integer minStockQuantity;

    /**
     * 业务员
     */
    private String salesperson;
} 